type IFA = If<true, 'a', 'b'>  // expected to be 'a'
type IFB = If<false, 'a', 'b'> // expected to be 'b'

type If<B extends boolean, R, L> = B extends true ? R : L;